This invention relates generally to data communication on computer networks and computer protocols which facilitate such communication. More particularly, it relates to techniques for decoupling a Point-to-Point Protocol (PPP) implementation both from the device driver which interacts with the communication media coupled to the network and from the network protocol layer, e.g., TCP/IP, which utilizes the services provided by the Point-to-Point Protocol.
In the very early days of computing, computer systems were standalone processors to which peripheral devices such as displays and printers and input devices were connected. Each computer system was independent and there was little communication between computer systems. Today, it is well known to interconnect computer systems in computer networks such as local area networks or wide area networks to achieve a variety of benefits including the sharing of data, services and resources available from the various computer systems coupled to the networks.
To communicate between the different computer systems along a network, many communication protocols have been developed. Some examples of well-known network protocols include the System Network Architecture (SNA), Transmission Control Protocol/Internet Protocol (TCP/IP), Network Basic Input Output System (NetBIOS), and Internet Packet Exchange/Sequence Packet Exchange (IPX/SPX). Other communication protocols are known and widely used. Because of the dynamic nature of the link in wide area network (WAN), different protocols with telecommunications links are used such as the Point-to-Point Protocol (PPP) which is the subject of the present invention is a well known protocol for encapsulating a network protocol over a point-to-point link in a wide area network. The PPP is described in RFC 1332 and RFC 1661 of the Internet Engineering Task Force (IETF) both of which are incorporated by reference.
The functions and associated software in a local area network are often described as a series of layers. Data transfer between one copy of a distributed application over the network to another copy of the distributed application is accomplished by using the services of an underlying series of communication layers. Generally, each layer in one computer system has a counterpart layer in the receiving computer system so that each layer communicates with respective peer layers.
The seven layer Open Systems Interconnect (OSI) model is one of the best known descriptions of local area network communications, although many communication implementations combine or omit one or more of the OSI layers. In OSI, the physical layer is the lowest layer which interacts directly with the network. It includes the actual bit stream transmission across the physical connections to the network. The second layer is the datalink layer which provides multiplexing and framing of the physical layer stream into messages. It also provides error detection, synchronization information and physical channel management. The third layer is the network layer which controls routing of information through the network. Services such as addressing, network initialization, switching, segmenting and formatting are provided in this layer. Sometimes acknowledgement of data delivery is accomplished in this layer; sometimes in the datalink layer.
The fourth layer is the transport layer which controls transparent data delivery, multiplexing and mapping. Reliable delivery as opposed to best effort in the layers below is accomplished by this layer if desired by the application. Services such as retransmission of missing data, reordering of data delivered out of order and correction of transmission errors are usually accomplished in this layer. The fifth layer is the session layer which uses the information from the transport layer to group pieces of data together as a common activity between two nodes in the network called a session. The sixth layer is the presentation layer which includes the interface between the session layer and the seventh layer the application layer. The presentation layer presents the information for use in the application layer without compromising the integrity of the session layer. The presentation layer provides data interpretation and format and code transformation while the application layer provides user application interfaces and management functions. The present invention is implemented largely in PPP layers which correspond closely to the OSI layers two, three and four.
WAN-based protocols, however, while layered on a conceptual basis, have often not followed this layered approach in their actual implementation. In prior implementations of PPP, for example, the entire protocol process is provided in a monolithic process operating in user space.
FIG. 1 illustrates one exemplary prior art architecture to provide the PPP functionality in UNIX based operating systems, e.g., AIXR developed by the IBM Corporation. The local system 10 communicates to remote systems 11 over the public switched telephone network 12 over a particular media technology, for example, ASYNC, Integrated Services Digital Network (ISDN), X.25 or Synchronous Data Link Control (SDLC). These messages are caught by the local system 10 by communication media mechanism 13 which possesses the specific interfaces dictated by the particular communication medium. The software portion of the communication media mechanism 13 operates in the kernel space of the operating system. A plurality of the mechanisms may exist each for a particular medium although only one is shown in the drawing. Each communication medium, mechanism will include its own device drivers each with a specified interface. The point-to-point process 15 must be able to couple to each of these interfaces to support each of the communication media.
The point-to-point protocol process 15 operates in the user space of the operating system. The point-to-point protocol process 15 establishes the physical connection; for example, it places a phone call to a remote system 11. The PPP process 15 encapsulates the network protocol data on the outgoing side by adding the PPP information and strips the point-to-point protocol data from incoming data. The point-to-point process 15 may provide the framing requirements which are specific for each communication medium mechanism to be supported. For example, the PPP process 15 may verify the integrity of the data of the incoming messages and remove any transport specific information in the packet such as octet stuffing or transport protocol headers. For outgoing messages, it would add transport specific information such as any data integrity calculations. The PPP process implements the Link Control Protocol (LCP) and the Network Control Protocol (NCP) which are subprotocols of the PPP. The LCP is used to agree on common link characteristics. The LCP handles the assignment and management of addresses which is especially difficult over switched point-to-point links. The LCP functions are handled for each instance of the communication medium by a separate copy of the point-to-point protocol process. A family of Network Control Protocols are used to establish and configure different network layer protocols. The NCPs handle negotiation of NCP characteristics, such as network addresses, for their respective network datagram protocol. Not all of the possible NCPs are typically handled by a given prior art PPP process. Network datagram support is provided by the PPP process so that network data is routed appropriately. Data destined for the remote system as the proper point-to-point information added to ensure proper routing at the remote system.
The software modules implementing the network protocols 17 operate in kernel space. In AIX, these software modules are considered parts of the operating system which allow the network applications such as hypertext transfer protocol (http), file transfer protocol (ftp) and telnet to be independent of the physical media over which communication is accomplished. For example, in the case of the Internet Protocol (IP), the IP network layer provides the interface to the socket layer so that all TCP/IP applications can transport data over point-to-point protocol connection. The network layers also serve as the interface between the communication media mechanism and the operating system network services.
Shown generally are the user processes 19 such as network applications which utilize the network services provided by the operating system.
The prior art implementations of the point-to-point protocol in a UNIX based operating system use a user space process which performs all the functions described above. As can be appreciated by the description above, the PPP process is very detailed and complicated. When a new communication mechanism is to be supported, the point-to-point process must be rewritten for the new communication mechanism. Naturally, the revision process incurs additional expense and time in the development cycle. Further, the vendor of the new communication mechanism must understand all aspects of point-to-point protocol rather than just the specifics necessary to support the new transport media. New network support also requires a similar reimplementation of the point-to-point protocol process. For example, the existing PPP software may be changed to handle new network control protocols or datagram protocols. Again, the vendor must have understanding of many aspects of point-to-point protocol, rather than just the additional support.
It is, therefore, desirable to minimize the efforts required to integrate the new communication media or network services into an operating system providing PPP for data link connections.